In a computer network, a client (e.g. a processor or computer in the network) that wishes to obtain a particular service will generally have a wide range of available resources that are capable of performing the service. While this is advantageous, it also creates resource management problems, e.g., which one of these resources should the client utilize? It is known in the art to utilize a server, which is generally comprised of both hardware and software, as an interface between a client and a plurality of resources. In a given network, there may be a plurality of servers, each one of which is itself associated with a plurality of resources and is able to provide a plurality of services. Moreover, for any given service, there may be a plurality of available servers.
In order to facilitate efficient utilization of network resources, it is known in the art to use a "broker mechanism" to receive requests from clients for various services, and to suggest an appropriate server to satisfy the various requests. One known type of broker operates to assign an entire broker to a client without regard to the resources required by the client.
None of the prior art systems, however, take into account performance discrepancies across the network. For example, due to various performance delays (e.g. bridges, bus traffic, routing problems), a particular server may be able to service client "1" more quickly than client "2." Furthermore, a server may be able to perform one particular service more quickly than another. Moreover, a server's ability to more efficiently provide service to client "1" over client "2" may further depend upon the type of service being performed.
A system is needed which evaluates the performance of a server from the perspective of the client and suggests the server that is best suited to provide a particular client with a particular service at a particular time.
Moreover, since present day networks frequently include many different types of servers which may have vastly different physical characteristics, a system is required that can perform the above function without any detailed knowledge of the internal operation and design of the various servers.